import { Controller, Get, Post, Body, Param, Query, Headers } from '@nestjs/common';
import { ModuleService } from './module.service';
import {
  CreateModuleDto,
  UpdateModuleDto,
  UpdateModuleStatusDto,
  CreateUsinghandledefDto,
  UpdateUsinghandledefDto,
  GetRoleModulesDto,
  UpdateModulesDto
} from './module.dto'

@Controller('admin/module')
export class ModuleController {
  constructor(private readonly moduleService: ModuleService) { }

  @Post('add')
  addModule(@Body() createModuleDto: CreateModuleDto) {
    return this.moduleService.addModule(createModuleDto);
  }

  @Post('update')
  updateModule(@Body() updateModuleDto: UpdateModuleDto) {
    return this.moduleService.updateModule(updateModuleDto);
  }

  @Post('updateStatus/:moduleId/:status')
  updateModuleStatus(@Param() updateModuleStatusDto: UpdateModuleStatusDto) {
    return this.moduleService.updateModuleStatus(updateModuleStatusDto);
  }

  @Get('getUserModules')
  getUserModules(@Query('parentId') parentId: string) {
    return this.moduleService.getUserModules(parentId);
  }

  @Get('getUserMainModules')
  getUserMainModules(@Headers('state') state) {
    const { userId } = state
    return this.moduleService.getUserMainModules(+userId);
  }

  @Get('tree')
  getModuleTree() {
    return this.moduleService.getModuleTree();
  }

  @Get(':moduleId')
  getModuleInfo(@Param('moduleId') moduleId: string) {
    return this.moduleService.getModuleInfo(moduleId);
  }

  @Get('getRoleModules')
  getRoleModules(@Query() getRoleModulesDto: GetRoleModulesDto) {
    return this.moduleService.getRoleModules(getRoleModulesDto);
  }

  @Post('updateRoleModules/:roleId')
  updateRoleModules(@Param('roleId') roleId: string, @Body() updateModulesDto: UpdateModulesDto) {
    return this.moduleService.updateRoleModules(roleId, updateModulesDto);
  }

  @Post('log/add')
  addModuleLog() {
    return this.moduleService.addModuleLog();
  }
}

@Controller('admin/usinghandledef')
export class UsinghandledefController {
  constructor(private readonly moduleService: ModuleService) { }

  @Get('getAuthByModuleId/:moduleId')
  getAuthByModuleId(@Param('moduleId') moduleId: string) {
    return this.moduleService.getAuthByModuleId(moduleId);
  }

  @Post('add')
  addUsinghandledef(@Body() createUsinghandledefDto: CreateUsinghandledefDto) {
    return this.moduleService.addUsinghandledef(createUsinghandledefDto);
  }

  @Get(':id')
  getUsinghandledefInfo(@Param('id') id: string) {
    return this.moduleService.getUsinghandledefInfo(+id);
  }

  @Post('update')
  updateUsinghandledef(@Body() updateUsinghandledefDto: UpdateUsinghandledefDto) {
    return this.moduleService.updateUsinghandledef(updateUsinghandledefDto);
  }
}


